<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet" href="./lib/bootstrap.css" />
  <script src="./lib/jquery.js"></script>
</head>

<body style="padding: 15px;">
  <!-- 添加图书的Panel面板 -->
  <div class="panel panel-primary">
    <div class="panel-heading">
      <h3 class="panel-title">添加新图书</h3>
    </div>
    <div class="panel-body form-inline">

      <div class="input-group">
        <div class="input-group-addon">书名</div>
        <input type="text" class="form-control" id="iptBookname" placeholder="请输入书名">
      </div>

      <div class="input-group">
        <div class="input-group-addon">作者</div>
        <input type="text" class="form-control" id="iptAuthor" placeholder="请输入作者">
      </div>

      <div class="input-group">
        <div class="input-group-addon">出版社</div>
        <input type="text" class="form-control" id="iptPublisher" placeholder="请输入出版社">
      </div>

      <button id="btnAdd" class="btn btn-primary">添加</button>

    </div>
  </div>


  <!-- 图书的表格 -->
  <table class="table table-bordered table-hover">
    <thead>
      <tr>
        <th>Id</th>
        <th>书名</th>
        <th>作者</th>
        <th>出版社</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody id="tb">

    </tbody>
  </table>

  <script>
    let appkey = 13200008888;
    // ------------------- 获取并展示书籍 -----------------------
    getBooks();

    function getBooks() {
      // 获取并展示书籍信息
      // 1. 按照接口文档，发送ajax请求，获取书籍数据
      $.get('http://www.itcbc.com:3006/api/getbooks', { appkey }, function (res) {
        console.log(res);
        if (res.status === 0) {
          // 数据获取成功
          // 2. 展示（渲染）书籍数据
          let str = '';
          // 2.1 循环 res.data 。循环的过程中，拼接tr
          res.data.forEach(item => {
            str += `<tr>
                      <td>${item.id}</td>
                      <td>${item.bookname}</td>
                      <td>${item.author}</td>
                      <td>${item.publisher}</td>
                      <td>
                        <a data-id="${item.id}" class="delete" href="javascript:;">删除</a>  
                      </td>
                    </tr>`;
          });
          // 2.2 循环之后，得到了82个tr.把所有的tr放到tbody标签里面
          $('#tb').html(str);
        }
      });
    }

    // ------------------  删除书籍 ------------------------
    // 1. 注册单击事件
    $('body').on('click', '.delete', function () {
      // 2. 询问是否要删除
      // let x = confirm('你确定要删除吗？你好狠！');
      // console.log(x); // 如果用户点了取消，confirm返回false；用户点击了确定，confirm返回true
      if (!confirm('你确定要删除吗？你好狠！')) {
        // 用户点击了取消，阻止代码向后执行
        return;
      }

      // 3. 根据接口文档，发送ajax请求。从而完成删除
      // 获取当前书籍的id
      let id = $(this).data('id'); // 123
      // console.log(id);
      // return;
      $.ajax({
        type: 'DELETE',
        url: `http://www.itcbc.com:3006/api/delbook?id=${id}&appkey=${appkey}`,
        success: function (res) {
          // 无论成功还是失败，反正都要提示，干脆，不用判断，直接提示
          alert(res.message);
          // 4. 删除成功，让被删除的这行消失
          if (res.status === 0) {
            // 调用getBooks函数，让数据从新渲染一下即可
            getBooks();
          }
        }
      });
    });


    // ------------------  添加书籍 ------------------------
    // 1. 给添加按钮注册单击事件
    $('#btnAdd').on('click', function () {
      // 2. 获取输入框的值（三个值 书名、作者、出版社）
      let bookname = $('#iptBookname').val().trim();
      let author = $('#iptAuthor').val().trim();
      let publisher = $('#iptPublisher').val().trim();
      // 3. 判断，三个值不能是空
      if (bookname == '' || author == '' || publisher == '') {
        alert('参数不能为空');
        return;
      }
      // 4. 根据接口文档，发送ajax请求。完成添加
      $.post('http://www.itcbc.com:3006/api/addbook', {
        bookname: bookname,
        author: author,
        publisher: publisher,
        appkey
      }, function (res) {
        alert(res.message);
        // 5. 添加成功之后，从新渲染
        if (res.status === 0) {
          getBooks();
        }
      });
    });
  </script>

</body>

</html>